/**
@description base文件

@copyright    Copyright 2021 高灯科技
@version      1.0.0
@link         https://www.goldentec.com
@author       venki.chen <venki.chen@goldentec.com>
@datetime     2021/11/15 10:53
*/

package base

import "fmt"

func init() {
	fmt.Println("初始化base模块成功……")
}

func Access() {
	/*// 函数的调用
	a := 10
	b := 10
	res1 := functionReturnLearn01(a, b)
	fmt.Println("res1=", res1)
	res2, res3 := functionReturnLearn02(a, b)
	fmt.Println("res2=,res3=", res2, res3)
	res4, res5 := functionReturnLearn03(a, b)
	fmt.Println("res4=,res5=", res4, res5)
	res6, res7 := functionReturnLearn04(a, b)
	fmt.Println("res6=,res7=", res6, res7)*/

	// 包的导入

	// 指针介绍
	p1 := 10
	p2 := 20
	ptrLearn(&p1, &p2)
	fmt.Println("p1=", p1, "p2=", p2)
}

// 指针练习 - 交换两个数
func ptrLearn(p1 *int, p2 *int) {
	fmt.Println(p1)// 地址值
	fmt.Println(p2)// 地址值
	temp := *p1
	*p1 = *p2
	*p2 = temp
}

// 函数返回值方式4 - 有形参的返回值 - 返回值类型相同，可以合并
func functionReturnLearn04(a int, b int) (r6, r7 int) {
	fmt.Println("a=", a)
	fmt.Println("b=", b)
	r6 = 10 // 没有冒号
	r7 = 11 // 没有冒号

	return
	// return r6, r7 // 这样写也可以的，返回值默认为0,0
}

// 函数返回值方式3 - 有形参的返回值
func functionReturnLearn03(a int, b int) (r4 int, r5 int) {
	fmt.Println("a=", a)
	fmt.Println("b=", b)
	r4 = 10 // 没有冒号
	r5 = 11 // 没有冒号

	return
}

// 函数返回值方式2 - 匿名返回值
func functionReturnLearn02(a int, b int) (int, int) {
	fmt.Println("a=", a)
	fmt.Println("b=", b)
	c := 10
	d := 11

	return c, d
}

// 函数返回值方式1
func functionReturnLearn01(a int, b int) int {
	fmt.Println("a=", a)
	fmt.Println("b=", b)
	c := 10

	return c
}
